package org.spring.springboot.app.user.sysuser.service;

import org.spring.springboot.app.base.Menu;
import org.spring.springboot.app.base.R;
import org.spring.springboot.app.user.sysuser.domain.bo.SysUserBO;
import org.spring.springboot.app.user.sysuser.domain.po.SysUserPO;
import org.spring.springboot.app.user.sysuser.domain.vo.*;

import javax.servlet.http.HttpServletRequest;
import java.util.List;

/**
 * 城市业务逻辑接口类
 * <p>
 * Created by bysocket on 07/02/2017.
 */
public interface ISysUserService {
    /**
     * @param id
     * @return
     */
    SysUserPO find(String id);

    /**
     * @return
     */
    List<SysUserPO> findAll(UserSearchVo vo);

    /**
     * @param
     * @return
     */
    int update(SysUserAddVO vo);

    /**
     * @param
     * @return
     */
    int delete(String id);
    /**
     * @param
     * @return
     */
    int deletes(String ids);

    /**
     *
     * @param loginId
     * @return
     */
    SysUserBO findByLoginId(String loginId);

    /**
     * 登录
     * @param userLoginReqVO
     * @return
     */
    R<UserLoginResVO> login(UserLoginReqVO userLoginReqVO, HttpServletRequest request);

    /**
     * 注册
     * @param userRegistReqVO
     * @param request
     * @return
     */
    R<UserRegistReqVO> regist(UserRegistReqVO userRegistReqVO, HttpServletRequest request);

    /**
     * 查询用户角色
     * @param id
     * @return
     */
    List<UserRoleQueryVO> queryUserRoles(String id);

    /**
     * 充值用户密码
     * @param id
     * @return
     */
    int resetPassword(String id);

    /**
     * 设置用户密码
     * @param id
     * @return
     */
    int setPassword(String id,String password);

    /**
     *  查询用户拥有的菜单
     * @param id 用户唯一标示
     * @return
     */
    List<Menu> selectUserMenus(String id);

    /**
     * 得到loginName 存在的数据
     * @param vo
     * @return
     */
    int getUserTargetCount(UserCheckVo vo);

    /**
     * 系统添加用户
     * @param vo
     * @return
     */
    R insertUserInfo(SysUserAddVO vo);
}
